/*
 * cliente.h
 *
 *  Created on: 28/10/2011
 *      Author: Normandia
 */


#ifndef CLIENTE_H_
#define CLIENTE_H_

#include  <stdio.h>
#include  <sys/types.h>
#include  <sys/socket.h>
#include  <netinet/in.h>
#include  <pthread.h>
#include  <string.h>
#include  <stdlib.h>
#include  <stdio.h>
#include  <arpa/inet.h>
#include  <signal.h>
#include  <semaphore.h>

#include "nipc.h"
#include "collections/queue.h"
#include "sockLib.h"
#include "filesystem.h"

#define LIBRE 1
#define OCUPADO 2
#define PUERTO 12345

#define DT_FILENAME_EOC 0x0FFFFFF8

int conectarClientes(uint8_t cant_conexiones);
void *solicitud(void *param);

uint32_t *clients;
uint8_t *cliente_libre;
//sem_t *semaforo_cliente;
T_MENSAJE* buffer_cliente;
uint8_t num_clients;
t_queue cola_pedidos;
sem_t socket_ready;
sem_t mutex_busqueda;

int conectarClientes(uint8_t cant_conexiones);
//void solicitud(void* param);
T_MENSAJE* enviarYRecibir(T_MENSAJE* mensaje);
void enviar(uint8_t id_socket, T_MENSAJE* mensaje);
T_MENSAJE* recibir(uint8_t id_socket);
uint8_t obtenerSocketReady();
void liberarSocket(uint8_t socket_id);
int handShake();


#endif /* CLIENTE_H_ */
